/**
 * 多线程 简单线程池处理，使用固定的回调函数格式, 简单,高效...没有实现释放(取消线程), 适用于工作线程常驻, 随程序而关闭
 * 
 * 开发者   : Marco
 * 创建时间 : 2016年07月26日, 下午5:31
 */

#ifndef __MARCOPP_MT_TPOOL_H__
#define __MARCOPP_MT_TPOOL_H__

#include "../marcopp.h"

MARCOPP_NAMESPACE_BEGIN
namespace mt { // multi thread

class tpool_impl;

class tpool {
public:
    /**
     * 构造
     * @param threads 最大工作线程数
     * @param stack_size 栈大小(M)
     */
    explicit tpool(int threads, int stack_size);
    
    ~tpool(void);
    
    /**
     * 添加任务
     * @param func 执行回调函数
     * @param arg 携带参数
     */
    void add_work(void (*func)(void *arg), void *arg);

private:
    tpool_impl* impl;
};

} // namespace mt
MARCOPP_NAMESPACE_END
#endif // endif __MARCOPP_MT_TPOOL_H__

